//客户列表
var $customerTable = $('#customerTableList');
var lockStatus = '';//当前点击是锁定还是解锁,0:解锁,2:锁定
var searchType = '1'//当前列表搜索是一级搜索(全局搜索)还是二级搜索(局部搜索),1:全局搜索,2:局部搜索
var customerId="",customerName='';//当前点击锁定、解锁数据的客户id和客户名称
var tableHeight=window.screen.height- $(".card-header").height() - $(".headerContainer").height() - 350;
tableHeight=tableHeight>820?tableHeight:820;
//防止表头与表格不对齐
$(window).resize(function () {
    $customerTable.bootstrapTable('resetView');
});

//初始化操作
$(function () {
    // 高级筛选创建日期--配置参数
    $('.create-time').datepicker({
        language: "zh-CN",
        autoclose: true, //选择后自动关闭
        clearBtn: true,
        todayHighlight: true,
        format: "yyyy-mm-dd"
    })

    $('#createTmStart').on('changeDate',function(){
        var startDate = $('#createTmStart').val();
        var endDate = $('#createTmEnd').val();
        if (endDate < startDate) {  // 对比结束日期和新的起止日期，起止日期大于结束日期则清空结束日期
            $('#createTmEnd').val('');
        }
        $('#createTmEnd').datepicker('destroy').datepicker({
            language: "zh-CN",
            autoclose: true, //选择后自动关闭
            clearBtn: true,
            todayHighlight: true,
            format: "yyyy-mm-dd",
            startDate: new Date(startDate)
        });
    });


    // 全局搜索
    $('#btn-search-simple').on('click', function () {
        searchType = '1';//全局搜索标识
        $(".new-tabs li").removeClass("active");
        $('#allTab').parent().addClass("active");
        $('#tabNumber').val(2);//全部
        clearSearchData();//清空高级筛选条件
        // resetSearch.call(this, customerTableListInit);//重新加载列表数据
        customerTableListInit();//重新加载列表数据
        $("#filterFilesContainer").slideUp();//关闭高级筛选
    });


    //加载全部公司信息(高级筛选所属分公司下拉)
    loadAllCompanyList();
    //加载全部账号信息(高级筛选创建人下拉)
    loadAllAccounts();

    customerTableListInit();

});

/**
 * 客户列表
 */
function customerTableListInit() {
    var tableUrl = '';
    var currentTab = $("#tabNumber").val();
    switch(currentTab){
        case '2':
            //查询全部列表
            tableUrl = '/csd/customerManager/selectCustomerList';
            break;
        case '1':
            //查询会员列表
            tableUrl = '/csd/customerManager/selectCustomerMemberList';
            break;
        case '0':
            //查询非会员列表
            tableUrl = '/csd/customerManager/selectCustomerNonMemberList';
            break;
        default:
            //默认查询全部列表
            tableUrl = '/csd/customerManager/selectCustomerList';
            break;
    };
    $customerTable.bootstrapTable('destroy');//先销毁表格
    $customerTable.bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: tableUrl,//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        height:tableHeight,
        dataType: "json",//数据类型
        striped: true,//是否显示行间隔色
        sortable: true,//是否启用排序
        sortOrder: "desc",//排序方式
        sortName: 'createTm',//排序字段
        cache: false,//是否使用缓存
        showColumns: false,//显示隐藏列
        showRefresh: false,//显示刷新按钮
        showToggle: false,//切换显示样式
        showFooter: false,//显示Table脚部
        pagination: true,//是否显示分页
        showPaginationSwitch: false,//是否显示分页按钮
        clickToSelect: false,//是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,//最少要显示的列数
        undefinedText: '',//cell没有值时显示
        sidePagination: "server",//分页方式：client客户端分页，server服务端分页
        uniqueId: 'customerId',
        idField: 'customerId',
        pageSize: 20,//每页的记录行数
        pageNumber: 1,//初始化加载第1页，默认第1页
        pageList: [20, 50],//可供选择的每页的行数
        fixedColumns: true,     // 冻结列
        fixedRightNumber: 1,    // 右侧固定列
        queryParams: queryParams,//查询参数
        columns: [
            {title: '客户编码', field: 'customerNumber', align: 'left', valign: 'middle'},
            {title: '客户名称', field: 'customerName', align: 'left', valign: 'middle'},
            {title: '所在分公司', field: 'companyName', align: 'left', valign: 'middle'},
            {title: '所有人', field: 'userName', align: 'left', valign: 'middle'},
            {title: '客户类型', field: 'customerType', align: 'right', valign: 'middle', width: '80', formatter: customerTypeFormat},
            {title: '是否会员', field: 'membershipLevel', align: 'center', valign: 'middle', width: '100',formatter: membershipLevelFormat},
            {title: '客户状态', field: 'memberErrorData', align: 'right', valign: 'middle', width: '100', formatter: memberErrorDataFormat},
            {title: '操作', field: 'operate', align: 'right', events: operateEvents, formatter: genderOpt}
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function () {
            //table列可拖动宽度
            $('.JCLRgrips').remove();
            $('#customerTableList').css({
                minWidth: $('#customerTableList').width()
            })
        },

        // onLoadSuccess: function () {
        //     $("[data-toggle='tooltip']").tooltip();//加这个是为了让操作列的提示图标显示在上方
        // },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        }
    });
}

/**
 * 客户列表--页面初始化及简单搜索查询条件
 * @param params
 * @returns {*}
 */
function queryParams(params){
    params.pageSize = params.limit;
    params.pageIndex =  (params.offset / params.limit) + 1;
    params.sortName = params.sort; //排序列名
    params.sortOrder = params.order;//排序方式
    if (searchType === '1'){
        //一级查询(全局搜索)
        params.customerName = $.trim($('#customerName').val());//客户名称
        $("#companySelect").find('option:first').prop('selected', 'selected');
        $('#userSelect').find('option:first').prop('selected', 'selected');
        // // 刷新下拉菜单selectpicker控件
        $("#companySelect").selectpicker('refresh');
        $('#userSelect').selectpicker('refresh');
    }else if(searchType === '2'){
        //二级查询(局部查询)
        params.companyId = $.trim($('#companySelect option:selected' ).val());//所在分公司名称
        params.accountId = $.trim($('#userSelect option:selected').val());//所有人名称
        $('#customerName').val("");
        //高级筛选
        params.customerType = $.trim($('#customerType option:selected' ).val());//客户类型
        params.currentStatus = $.trim($('#currentStatus option:selected').val());//领取状态
        params.customerLevel = $.trim($('#customerLevel option:selected' ).val());//客户等级
        params.industry = $.trim($('#industry option:selected').val());//所在行业
        if(!$("#noMember").parent("li").hasClass("active")){
            params.newOrderRenewalCustomer= $.trim($('#newOrderRenewalCustomer option:selected' ).val());//会员类型
        };
        params.createTmStart = $.trim($('#createTmStart').val());//开始时间
        params.createTmEnd = $.trim($('#createTmEnd').val());//结束时间
        params.memberErrorData = $.trim($('#memberErrorData option:selected' ).val());//客户状态

    }

    return params;
}


$('#companySelect').on('changed.bs.select', function () {
    if ($(this).val() == '') {
        $(this).val('').selectpicker('refresh');
    }
})
$('#userSelect').on('changed.bs.select', function () {
    if ($(this).val() == '') {
        $(this).val('').selectpicker('refresh');
    }
})


/**
 * 客户列表--高级筛选搜索条件
 * @param params
 */
function advancedQueryParams(params){
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.sortName = params.sort; //排序列名
    params.sortOrder = params.order;//排序方式

    $('#customerName').val('');//清空客户名称(普通搜索)

    params.memberType = $('#memberTypeSelect option:selected').val();//会员类型
    params.companyId = $('#companySelect option:selected').val();//所属分公司
    params.createTmStart = $('#createTmStart').val();  //创建开始日期
    params.createTmEnd = $('#createTmEnd').val();    //创建截止日期
    params.currentStatus = $('#currentStatusSelect option:selected').val();//目前状态
    params.companyId = $('#companySelect option:selected').val();//所属公司
    params.accountId = $('#userSelect option:selected').val();//创建人
    return params;
}

/**
 * 客户列表--列表序列号
 */
function indexFormat(value, row, index) {
    return index + 1;
}

/**
 * 客户级别格式化(目前没有关联字典表取)
 */
function membershipLevelFormat(value, row, index){
    if (value == null || value == undefined) {
        return "-";
    } else if (0 == value) {
        return "非会员客户";
    } else{
        return "会员客户";
    }
}

/**
 * 客户类型格式化(0企业客;1个人客户)
 */
function customerTypeFormat(value, row, index) {
    if (value == null || value == undefined) {
        return "-";
    } else if (0 == value) {
        return "<span class='label label-success-light' style='border-radius: 20px'>企业客户</span>";
    } else if (1 == value) {
        return "<span class='label label-info-light' style='border-radius: 20px'>个人客户</span>";
    }
}

/**
 * 目前状态格式化
 */
function memberErrorDataFormat(value, row, index) {
    if (value == null || value == undefined) {
        return "-";
    } else if (1 == value) {
        return "<i class='customerStatus errorStatus'></i><span>错误</span>";
    } else if (0 == value) {
        return "<i class='customerStatus successStatus'></i><span>正确</span>";
    } else if (2 == value) {
        return "<i class='customerStatus lockStatus'></i><span>锁定</span>";
    } 
}

/**
 * 自定义操作列内容
 */
function genderOpt(value, row, index) {
    var lockHtml='';
    switch(row.memberErrorData){
        case 0:
            lockHtml = '<button type="button" class="btn btn-default activeBtn" id="lock"><i class="mdi mdi-lock"></i>锁定</button>';
            break;
        case 2:
            lockHtml = '<button type="button" class="btn btn-default activeBtn" id="openLock"><i class="mdi mdi-lock-open"></i>解锁</button>';
            break;
        default:
            lockHtml = '';
            break;
    };
    let html = '<button type="button" class="btn btn-default activeBtn detailBtn" id="detail"><i class="mdi mdi-eye"></i>查看</button>' + lockHtml;
    return html;
}

/**
 * 自定义操作列事件
 */
window.operateEvents = {
    //查看点击事件
    'click #detail': function (e, value, row, index) {
        if(row.customerType == 1) {//个人客户
            contactNameDetail(row.customerName,row.contactPersonPhone,row.customerId);
        }else{
            parent.$(parent.document).data('multitabs').create({
                iframe : true,
                title : '客户详情',
                url : "/front/csd/customerManager/customerDetail?customerId=" + row.customerId
            }, true);
        }
    },
    //锁定事件
    'click #lock': function (e, value, row, index) {
        lockStatus = "2";
        customerId= row.customerId;
        customerName= row.customerName;
        $("#modalTitle").text("锁定原因");
        $("#reasonContent").attr({"placeholder":"请输入锁定原因"});
        $("#reasonContent").val("")
        $('#dialogReason').modal('show');
    },
    //解锁事件
    'click #openLock': function (e, value, row, index) {
        lockStatus="0";
        customerId= row.customerId;
        customerName= row.customerName;
        $("#modalTitle").text("解锁原因");
        $("#reasonContent").attr({"placeholder":"请输入解锁原因"});
        $("#reasonContent").val("")
        $('#dialogReason').modal('show');
    }
};

function confirmReason() {
    var releaseReason = $('#reasonContent').val();//锁定/解锁原因
    if(!releaseReason){
        $.alert(`${lockStatus === '0' ?'解锁':'锁定'}原因不能为空`);
        return;
    } else if (releaseReason.length > 255) {
        $.alert(`${lockStatus === '0' ?'解锁':'锁定'}原因长度不能大于255个字符！`);
        return;
    };
    let params = `?customerId=${customerId}&customerName=${customerName}&type=${lockStatus}&remarks=${releaseReason}`
    $.alert({
        title: '提示',
        content: `确定要${lockStatus === '0' ?'解锁':'锁定'}吗？`,
        buttons: {
            confirm: {
                text: '确认',
                btnClass: 'btn-primary',
                action: function () {
                    $.ajax({
                        type: "post",
                        url: "/csd/customerManager/updateCustomerMembershipLevel"+params,
                        dataType: 'json',
                        success: function (data, status) {
                            if (data.code == '000000') {
                                $.alert(`${lockStatus === '0' ?'解锁':'锁定'}成功!`);
                                $customerTable.bootstrapTable('refresh');
                            } else if (data.code == 'MNE0001') {
                                $.alert(data.message);
                            } else {
                                $.alert(`${lockStatus === '0' ?'解锁':'锁定'}失败!`);
                            }
                        },
                        error: function () {
                            $.alert(`${lockStatus === '0' ?'解锁':'锁定'}异常，请稍后再试!`);
                        }
                    });
                }
            },
            cancel: {
                text: '取消',
                action: function () {
                }
            }
        }
    });
    $('#dialogReason').modal('hide');
}


/**
 * 我的客户(个人客户)--客户名称列点击事件(客户详情)
 * @param customerName
 * @param contactPersonPhone
 */
function contactNameDetail (customerName, contactPersonPhone, customerId) {
    var contactId = "";

    //查询联系人id,进行跳转
    $.ajax({
        url: '/contact/getCustomerIdAndContactNameAndAccountId',
        type: 'POST',
        dataType: "json",
        data: {
            customerId,
            contactName: customerName,
            contactInformation : contactPersonPhone,
            contactNature : '1',
            csd:'csd'
        },
        success: (function (data) {
            if (data.code == "000000") {
                if (data.data.contactId != null) {
                    contactId = data.data.contactId;
                    parent.$(parent.document).data('multitabs').create({
                        iframe: true,
                        title: '联系人详情',
                        url: "/front/user/contactManager/contactDetail?contactId=" + contactId
                    },true);
                }else{
                    $.alert("数据有问题,请重试!");
                }
            } else {
                alert("操作失败");
            }
        }),
        error: (function () {
            alert("失败");
        })
    });
}

//客户列表--全部、会员客户、非会员客户tab切换
function changeTab(tabStr){
    //重置高级筛选搜索条件
    clearSearchData();
    $("#searchContainer input").val("");
    $("#companySelect").find('option:first').prop('selected', 'selected');
    $('#userSelect').find('option:first').prop('selected', 'selected');
    // // 刷新下拉菜单selectpicker控件
    $("#companySelect").selectpicker('refresh');
    $('#userSelect').selectpicker('refresh');
    $("#filterFilesContainer").slideUp();//关闭高级筛选
    $("#memberType").show();
    if (tabStr == 'all') {
        $('#tabNumber').val(2);//全部
    }

    if(tabStr == 'member') {
        $('#tabNumber').val(1);//会员客户
    }

    if (tabStr == 'noMember') {
        $('#tabNumber').val(0);//非会员客户
        $("#memberType").hide();
    }
    // resetSearch.call(this, customerTableListInit);//重新加载列表数据
    customerTableListInit();//重新加载列表数据

}

//选择所属分公司和所有人后 点击提交,查询列表数据
//局部搜索
function localSearch(idStr,titleContent){
    searchType = '2';
    // resetSearch.call(this, customerTableListInit);//重新加载列表数据
    customerTableListInit();//重新加载列表数据
    $("#filterFilesContainer").slideUp()
}
//清空搜索条件、重置查询条件
function clearSearchData(){
    $('#advanceFilterContainer input').val('');//清空--高级筛选input框
    $('#advanceFilterContainer select').val('').selectpicker('refresh');//清空--高级筛选select框
}


//  重置
function resetData(_this) {
    searchType='2';
    clearSearchData();
    // resetSearch.call(this, customerTableListInit);//重新加载列表数据
    customerTableListInit();//重新加载列表数据
    $("#filterFilesContainer").slideUp()
}

function showToggle(){
    $("#filterFilesContainer").slideToggle()
}
/*
$("#searchContainer").mousemove(function(){
    $("#customerName").animate({'width':'240px'},{speed:300,easing:'linear',queue:false})
}).mouseleave(function(){
    $("#customerName").animate({'width':'0'},{speed:300,easing:'linear',queue:false})
})*/
